package com.wxproject.demo.Service;

import com.github.pagehelper.PageInfo;
import com.wxproject.demo.Entity.AO.ArticleCreateAO;
import com.wxproject.demo.Entity.Model.ArticleDO;
import com.wxproject.demo.Entity.VO.ArticleContextVO;
import com.wxproject.demo.Entity.VO.ArticleDetailsVO;

import com.wxproject.demo.Entity.VO.RecommendArticleVO;

import java.util.List;

/**
 * @author HCJ
 * @date 2021/4/4 19:23
 * @description
 */
public interface ArticleService {

    /**
     * 分页获取文章列表
     * @return
     */
    PageInfo getAllByPage(int page, int size, String typeId);

    /**
     * 查询全部信息
     * @return
     */
    List<ArticleDO> getAll();
    /**
     * 文章浏览（阅读量+1）
     * @param articleId
     * @return
     */
    Boolean look(String articleId);
    /**
     * 文章点赞（点赞量+1）
     * @param articleId
     * @return
     */
    Boolean like(String articleId);
    /**
     * 文章踩（踩量+1）
     * @param articleId
     * @return
     */
    Boolean dislike(String articleId);
    /**
     * 删除文章（逻辑删除，isDelete字段变为0）
     * @param articleId
     * @return
     */
    Boolean logicdeleteArticle(String articleId);
    /**
     * 删除指定文章
     * @param articleId
     * @return
     */
    Boolean DeleteArticle(String articleId);
    /**
     * 判断用户是否是指定文章的发布者（即是否对其有操作权限）
     * @param articleId
     * @param userId
     * @return
     */
    Boolean isOwnerOfArticle(String articleId,String userId);
    /**
     * 判断文章是否存在
     * @param articleId
     * @return
     */
    Boolean isArticleExists(String articleId);
    /**
     * 创建文章
     * @param articleCreateAO
     * @return
     */
    Boolean createArticle(ArticleCreateAO articleCreateAO,String userId);
    /**
     * 获取今日阅读量排行前10文章
     * @return
     */
    List<RecommendArticleVO> recommendedArticle();
    /**
     * 根据文章ID获取文章详情
     * @param articleId
     * @return
     */

    ArticleDetailsVO getArticleDetails(String articleId);

    ArticleContextVO getArticleContext(String id);

    PageInfo serchArticles(int page, int size, String key);
}
